home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / pas_all.zip / TI202.ASC < prev    next >
Text File  |  1992-09-02  |  25KB  |  991 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  10.   VERSION : 1.03A
  11.        OS : PC-DOS
  12.      DATE : March 10, 1986                              PAGE : 1/15
  13.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  14.  
  15.  
  16.  
  17.  
  18.   This packet contains update information regarding the following
  19.   topics for the Turbo Graphix Toolbox.
  20.  
  21.  
  22.   1) AXIS DRAWING MODULE         AXIS.HGH                  PAGE 3
  23.  
  24.   2) POLYGON DRAWING MODULE      POLYGON.HGH               PAGE 9
  25.  
  26.   3) BAR CHART MODULE            HISTOGRM.HGH              PAGE 13
  27.  
  28.   This patch will update version 1.03A of the Turbo Graphix Toolbox
  29.   to version 1.05A. The Turbo Graphix ToolBox is provided in source
  30.   code form, so you can make these changes directly to the source
  31.   code. The reason these changes must be made is that the
  32.  
  33.               DrawAxis(...);         { Define the axis frame. }
  34.               DrawPolygon(...);      { Plot first curve.      }
  35.               ResetAxis;             { Set AxisGlb to true.   }
  36.               DrawPolygon(...);      { Plot second curve.     }
  37.               ResetAxis;             { Set AxisGlb to true.   }
  38.               DrawHistogram(...);    { Plot third curve.      }
  39.  
  40.  
  41.   If  you make the changes described,  you should change the header  of
  42.   all the modules that end in .HGH to read:
  43.  
  44.          "TURBO GRAPHIX version 1.05A"
  45.  
  46.   You   should  change  the  module  version  number  in  AXIS.HGH,
  47.   POLYGON.HGH,and HISTOGRM.HGH to read:
  48.  
  49.          "Module version 1.05A"
  50.  
  51.   Note: You should also delete the variable declaration:
  52.  
  53.                        Font : IBMFont;
  54.  
  55.   from  the file DUMMY.INC .
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  76.   VERSION : 1.03A
  77.        OS : PC-DOS
  78.      DATE : March 10, 1986                              PAGE : 2/15
  79.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  80.  
  81.  
  82.  
  83.  
  84.                            AXIS.HGH
  85.      (***********************************************************)
  86.      (*                TURBO GRAPHIX version 1.03A              *)
  87.      (*                                                         *)
  88.      (*                   Axis drawing module                   *)
  89.      (*                  Module version  1.03A                  *)
  90.      (*                                                         *)
  91.      (*                  Copyright (C) 1985 by                  *)
  92.      (*                  BORLAND International                  *)
  93.      (***********************************************************)
  94.   ****************** ( CHANGE 1.03A TO 1.05A ) ******************
  95.  
  96.   procedure DrawAxis(XDens,YDens,XLeft,YTop,XRight,YBottom,XAxis,
  97.                      YAxis:integer;
  98.                      Arrows:boolean);
  99.    var LineStyleLoc,xk0,yk0,xk1,yk1,xk2,yk2,NDiff:integer;
  100.        x2,y2,MaxExponentX,MaxExponentY,i,ys,xs,Delta,NPoints:integer;
  101.        Difference,Number,s,Fract:real;
  102.        X1RefLoc,X2RefLoc,Y1RefLoc,Y2RefLoc,X1RefLoc2,X2RefLoc2,
  103.        Y1RefLoc2,Y2RefLoc2:integer;
  104.        ClippingLoc,DirectModeLoc,HeaderLoc:boolean;
  105.  
  106.     function StringNumber(X1:real;
  107.                           MaxExponent:integer):wrkstring;
  108.       var y:wrkstring;
  109.       begin
  110.         str(X1*exp(-MaxExponent*ln(10.0)):5:2,y);
  111.         StringNumber:=y;
  112.       end;
  113.  
  114.     function GetExponent(X1:real):integer;
  115.       begin
  116.         GetExponent:=0;
  117.         if X1<>0.0 then
  118.           if abs(X1)>=1.0 then GetExponent:=trunc(ln(abs(X1))/ln(10.0))
  119.           else GetExponent:=-trunc(abs(ln(abs(X1)))/ln(10.0)+1.0);
  120.       end;
  121.  
  122.     procedure DrawNum(x1,y1,MaxExponent:integer;
  123.                       Number:real);
  124.       var i:integer;
  125.           StrNumber:wrkstring;
  126.       begin
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  142.   VERSION : 1.03A
  143.        OS : PC-DOS
  144.      DATE : March 10, 1986                              PAGE : 3/15
  145.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  146.  
  147.  
  148.  
  149.  
  150.         StrNumber:=StringNumber(Number,MaxExponent);
  151.         y1:=y1-3;
  152.         for i:=1 to 5 do DrawAscii(x1,y1,1,ord(StrNumber[i]));
  153.       end;
  154.  
  155.   (AXIS.HGH cont.)
  156.     function Balance:integer;
  157.       begin
  158.         Balance:=0;
  159.         s:=s+Fract;
  160.         if s>=0 then
  161.          begin
  162.           s:=s-1.0;
  163.           Balance:=1;
  164.          end;
  165.       end;
  166.  
  167.     procedure DrawExponent(x1,y1,MaxExponent:integer);
  168.       var i:integer;
  169.           StrNumber:wrkstring;
  170.       begin
  171.         y1:=y1-3;
  172.         x1:=x1+1;
  173.         DrawAscii(x1,y1,1,49);
  174.         DrawAscii(x1,y1,1,48);
  175.         str(MaxExponent:3,StrNumber);
  176.         y1:=y1-3;
  177.         x1:=x1-7;
  178.         for i:=1 to 3 do DrawAscii(x1,y1,1,ord(StrNumber[i]));
  179.       end;
  180.  
  181.     begin { DrawAxis }
  182.       LineStyleLoc:=LinestyleGlb;
  183.       SetLineStyle(0);
  184.  
  185.       AxisGlb:=true;   <----------{***** DELETE THIS LINE. *****}
  186.  
  187.       DirectModeLoc:=DirectModeGlb;
  188.       DirectModeGlb:=true;
  189.       with window[WindowNdxGlb] do
  190.        begin
  191.         X1RefLoc:=x1;
  192.         X2RefLoc:=x2;
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  208.   VERSION : 1.03A
  209.        OS : PC-DOS
  210.      DATE : March 10, 1986                              PAGE : 4/15
  211.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  212.  
  213.  
  214.  
  215.  
  216.         Y1RefLoc:=y1;
  217.         Y2RefLoc:=y2;
  218.  
  219.                      <---|
  220.         X1Glb:=XLeft;    |
  221.         X2Glb:=XRight;   |--------{***** DELETE THIS BLOCK. *****}
  222.         Y1Glb:=YTop;     |
  223.         Y2Glb:=YBottom;  |
  224.                      <---|
  225.  
  226.   (AXIS.HGH cont.)
  227.  
  228.   {**** CHANGE THE FOLLOWING CALL TO ReDefineWindow TO READ :  ****}
  229.   { ReDefineWindow(WindowNdxGlb,x1+XLeft,y1+YTop,x2-XRight,y2-YBottom);
  230.   }
  231.  
  232.    ReDefineWindow(WindowNdxGlb,x1+X1Glb,y1+Y1Glb,x2-X2Glb,y2-Y2Glb);
  233.  
  234.         SelectWindow(WindowNdxGlb);
  235.        end;
  236.       if (XDens<0) xor (YDens<0) then
  237.        begin
  238.         HeaderLoc:=HeaderGlb;
  239.         HeaderGlb:=False;
  240.         DrawBorder;
  241.         HeaderGlb:=HeaderLoc;
  242.        end;
  243.       XDens:=abs(XDens);
  244.       YDens:=abs(YDens);
  245.       if XDens>9 then XDens:=0;
  246.       if YDens>9 then YDens:=0;
  247.       xk0:=(X1RefGlb+4) shl 3;
  248.       yk0:=Y2RefGlb-14;
  249.       yk1:=Y1RefGlb+6;
  250.       xk1:=xk0;
  251.       yk2:=yk0;
  252.       xk2:=(X2RefGlb-2) shl 3+7;
  253.       if (XAxis>=0) or (YAxis>=0) then
  254.        begin
  255.         ClippingLoc:=ClippingGlb;
  256.         ClippingGlb:=true;
  257.         with window[WindowNdxGlb] do
  258.          begin
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  274.   VERSION : 1.03A
  275.        OS : PC-DOS
  276.      DATE : March 10, 1986                              PAGE : 5/15
  277.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  278.  
  279.  
  280.  
  281.  
  282.           X1RefLoc2:=x1;
  283.           X2RefLoc2:=x2;
  284.           Y1RefLoc2:=y1;
  285.           Y2RefLoc2:=y2;
  286.          end;
  287.         ReDefineWindow(WindowNdxGlb,X1RefLoc2+4,Y1RefLoc2+6,
  288.         X2RefLoc2-2,Y2RefLoc2-14);
  289.         SelectWindow(WindowNdxGlb);
  290.         DirectModeGlb:=false;
  291.  
  292.   (AXIS.HGH cont.)
  293.         if (XAxis>=0) then
  294.          begin
  295.           SetLineStyle(XAxis);
  296.           DrawLine(X1WldGlb,Y1WldGlb+Y2WldGlb,X2WldGlb,
  297.           Y1WldGlb+Y2WldGlb);
  298.           SetLineStyle(0);
  299.          end;
  300.         if (YAxis>=0) then
  301.          begin
  302.           SetLinestyle(YAxis);
  303.           DrawLine(0,Y1WldGlb,0,Y2WldGlb);
  304.           SetLineStyle(0);
  305.          end;
  306.         ClippingGlb:=ClippingLoc;
  307.         DirectModeGlb:=true;
  308.         ReDefineWindow(WindowNdxGlb,X1RefLoc2,Y1RefLoc2,
  309.         X2RefLoc2,Y2RefLoc2);
  310.         SelectWindow(WindowNdxGlb);
  311.        end;
  312.       if YDens>=2 then
  313.        begin
  314.         DrawLine(xk0,yk0,xk1,yk1);
  315.         if Arrows then
  316.          begin
  317.           DrawLine(xk0,yk1,xk0-4,yk1+4);
  318.           DrawLine(xk0,yk1,xk0+4,yk1+4);
  319.           dp(xk0,yk1-1);
  320.          end;
  321.        end;
  322.        if XDens>=2 then
  323.         begin
  324.          DrawLine(xk0,yk0,xk2+1,yk2);
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  340.   VERSION : 1.03A
  341.        OS : PC-DOS
  342.      DATE : March 10, 1986                              PAGE : 6/15
  343.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  344.  
  345.  
  346.  
  347.  
  348.          if Arrows then
  349.           begin
  350.            DrawLine(xk2,yk2,xk2-4,yk2-4);
  351.            DrawLine(xk2,yk2,xk2-4,yk2+4);
  352.           end;
  353.         end;
  354.       if (abs(yk0-yk1)>=35) and (abs(xk2-xk1)>=150) then
  355.        begin
  356.         DrawLine(xk0,yk0,xk0-4,yk0);
  357.         DrawLine(xk0,yk0,xk0,yk0+4);
  358.         Delta:=Y2RefGlb-Y1RefGlb-20;
  359.         NPoints:=Delta div 7;
  360.         NDiff:=Delta-(NPoints shl 3)+NPoints;
  361.         if YDens>=4 then
  362.  
  363.         begin
  364.           if abs(Y2WldGlb)>abs(Y1WldGlb)
  365.           then MaxExponentY:=GetExponent(Y2WldGlb)
  366.           else MaxExponentY:=GetExponent(Y1WldGlb);
  367.           DrawNum(X1RefGlb shl 3,yk0+1,MaxExponentY,Y1WldGlb);
  368.           if MaxExponentY<>0
  369.           then DrawExponent(X1RefGlb shl 3+1,yk1+2,MaxExponentY);
  370.         end;
  371.         Fract:=NDiff/NPoints;
  372.         s:=-Fract;
  373.         ys:=yk0;
  374.         Difference:=(Y2WldGlb-Y1WldGlb)/NPoints;
  375.         for i:=1 to NPoints do
  376.          begin
  377.           ys:=ys-7-Balance;
  378.           if (YDens>2) and (ys>Y1RefGlb+13) then
  379.            begin
  380.             Number:=Y1WldGlb+i*Difference;
  381.             DrawLine(xk0,ys,xk0-4,ys);
  382.             if YDens>=4 then if i mod (10-YDens)=0 then
  383.               DrawNum(X1RefGlb shl 3,ys+1,MaxExponentY,Number);
  384.            end;
  385.          end;
  386.         if XDens>=4 then
  387.          begin
  388.           if abs(X2WldGlb)>abs(X1WldGlb)
  389.           then MaxExponentX:=GetExponent(X2WldGlb)
  390.           else MaxExponentX:=GetExponent(X1WldGlb);
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  406.   VERSION : 1.03A
  407.        OS : PC-DOS
  408.      DATE : March 10, 1986                              PAGE : 7/15
  409.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  410.  
  411.  
  412.  
  413.  
  414.           DrawNum(xk0-14,yk0+10,MaxExponentX,X1WldGlb);
  415.           if MaxExponentX<>0
  416.           then DrawExponent(xk2-13,yk0+10,MaxExponentX);
  417.          end;
  418.         Delta:=abs(X2RefGlb-X1RefGlb) shl 3-41;
  419.         NPoints:=Delta div 30;
  420.         NDiff:Delta-(NPoints shl 5)+(NPoints shl 1);
  421.         Fract:=NDiff/NPoints;
  422.         s:=-Fract;
  423.         xs:=xko-1;
  424.         Difference:=(X2WldGlb-X1WldGlb)/NPoints;
  425.         for i:=1 to NPoints do
  426.  
  427.   (AXIS.HGH cont.)
  428.         begin
  429.           xs:=xs+30+Balance:
  430.           if (XDens>2) and (xs<X2RefGlb shl 3+7-24) then
  431.            begin
  432.             Number:=X1WldGlb+i*Difference;
  433.             DrawLine(xs,yk0,xs,yk0+4);
  434.             if XDens>=4 then if i mod (10-XDens)=0 then
  435.               DrawNum(xs-14,yk0+10,MaxExponentX,Number);
  436.            end;
  437.          end;
  438.        end;
  439.        ReDefineWindow(WindowNdxGlb,X1RefLoc,Y1RefLoc,
  440.        X2RefLoc,Y2RefLoc);
  441.        SelectWindow(WindowNdxGlb);
  442.        DirectModeGlb:=DirectModeLoc;
  443.        SetLineStyle(LineStyleLoc);
  444.  
  445.                      |---{ ***** INSERT THE FOLLOWING BLOCK. *****}
  446.         <------------|
  447.                      | AxisGlb := true;
  448.                      | X1Glb := XLeft;
  449.                      | X2Glb := XRight;
  450.                      | Y1Glb := YTop;
  451.                      | Y2Glb := YBottom;
  452.                      |
  453.                      |---{ ***************************************}
  454.     end;
  455.  
  456.     {***** APPEND THE FOLLOWING PROCEDURE TO AXIS.HGH *****}
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  472.   VERSION : 1.03A
  473.        OS : PC-DOS
  474.      DATE : March 10, 1986                              PAGE : 8/15
  475.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  476.  
  477.  
  478.  
  479.  
  480.   procedure ResetAxis;
  481.     begin
  482.       AxisGlb := true;
  483.     end;
  484.                           POLYGON.HGH
  485.     (***********************************************************)
  486.     (*                                                         *)
  487.     (*              TURBO GRAPHIX version 1.03A                *)
  488.     (*                                                         *)
  489.     (*                Polygon drawing module                   *)
  490.     (*                 Module version 1.03A                    *)
  491.     (*                                                         *)
  492.     (*                Copyright  (C) 1985 by                   *)
  493.     (*                BORLAND   International                  *)
  494.     (***********************************************************)
  495.   ********************( CHANGE 1.03A TO 1.05A )********************
  496.  
  497.   procedure DrawPolygon(A:PlotArray;
  498.                         I0,NPoints,Line,Scale,Lines:integer);
  499.     var i,x1,x2,y1,y2,XOffset,YOffset:integer;
  500.         X1RefLoc,Y1RefLoc,X2RefLoc,Y2RefLoc:integer;
  501.         DeltaY,XOs1,XOs2,YOs1,YOs2:integer;
  502.         AutoClip,DirectModeLoc,PlotLine,PlotSymbol:boolean;
  503.  
  504.         X1Loc,Y1Loc,X2Loc,Y2Loc:integer; <--{*** INSERT THIS LINE. ***}
  505.  
  506.     procedure DrawPointClipped(x,y:integer);
  507.       begin
  508.         if (x1>X1RefGlb shl 3) and (x2<X2RefGlb shl 3+7) then
  509.           if (y1>Y1RefGlb) and (y2<Y2RefGlb) then dp(x,y);
  510.       end;
  511.  
  512.     procedure DrawItem(X,Y:integer);
  513.       var LineStyleLoc:integer;
  514.  
  515.       begin
  516.         LineStyleLoc:=LineStyleGlb;
  517.         SetLineStyle(0);
  518.         case Line of
  519.           2: DrawCrossDiag(X,Y,Scale);
  520.           3,4: DrawSquareC(X-Scale,Y+Scale,X+Scale,Y-Scale,(Line=4));
  521.           5: DrawDiamond(X,Y,Scale+1);
  522.           6: DrawWye(X,Y,Scale+1);
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  538.   VERSION : 1.03A
  539.        OS : PC-DOS
  540.      DATE : March 10, 1986                              PAGE : 9/15
  541.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  542.  
  543.  
  544.  
  545.  
  546.           1: DrawCross(X,Y,Scale);
  547.           8: DrawCircleDirect(X,Y,Scale+1,False);
  548.           9: begin
  549.                PlotLine:=false;
  550.                if AutoClip then DrawPointClipped(X,Y)
  551.                else dp(X,Y);
  552.              end;
  553.  
  554.   (POLYGON.HGH cont.)
  555.  
  556.           7: DrawStar(X,Y,Scale);
  557.          end;
  558.         SetLineStyle(LineStyleLoc);
  559.       end;
  560.  
  561.     begin
  562.       if abs(NPoints-I0)>=2 then
  563.  
  564.        begin
  565.            <-------------|{***** INSERT THE FOLLOWING BLOCK. *****}
  566.                          |
  567.                          | X1Loc := X1Glb;
  568.                          | Y1Loc := Y1Glb;
  569.                          | X2Loc := X2Glb;
  570.                          | Y2Loc := Y2Glb;
  571.                          |
  572.                          |{***************************************}
  573.         DirectModeLoc:=DirectModeGlb;
  574.         DirectModeGlb:=true;
  575.         AutoClip:=(NPoints<0);
  576.         NPoints:=abs(NPoints);
  577.         XOs1:=1;
  578.         XOs2:=1;
  579.         YOs1:=6;
  580.         YOs2:=6;
  581.         if AxisGlb then
  582.          begin
  583.           XOs1:=4;
  584.           XOs2:=2;
  585.           YOs1:=6;
  586.           YOs2:=14;
  587.           if (((X2RefGlb+7-XOs2-X1RefGlb+XOs1) > (XOs1+XOs2) shl 1) and
  588.              (Y2RefGlb-YOs2-Y1RefGlb+YOs1 > (YOs1+YOs2) shl 1)) then
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  604.   VERSION : 1.03A
  605.        OS : PC-DOS
  606.      DATE : March 10, 1986                             PAGE : 10/15
  607.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  608.  
  609.  
  610.  
  611.  
  612.            begin
  613.             X1RefLoc:=X1RefGlb;
  614.             x1:=X1RefGlb+XOs1+X1Glb;
  615.             Y1RefLoc:=Y1RefGlb;
  616.             y1:=Y1RefGlb+YOs1+Y1Glb;
  617.             X2RefLoc:=X2RefGlb;
  618.             x2:=X2RefGlb-XOs2-X2Glb;
  619.             Y2RefLoc:=Y2RefGlb;
  620.             y2:=Y2RefGlb-YOs2-Y2Glb;
  621.             ReDefineWindow(WindowNdxGlb,x1,y1,x2,y2);
  622.             SelectWindow(WindowNdxGlb);
  623.  
  624.   (POLYGON.HGH cont.)
  625.  
  626.              <-----------------|{***** INSERT THE FOLLOWING LINE. *****}
  627.                                |
  628.                                | AxisGlb := true;
  629.                                |
  630.                                |{**************************************}
  631.            end;
  632.          end;
  633.  
  634.         PlotLine:=(Line>=0);
  635.         PlotSymbol:=(Line<>0);
  636.         Line:=abs(Line);
  637.         Scale:=abs(Scale);
  638.       if Lines<0 then DeltaY:=trunc(1.0/(abs(Y1WldGlb)+abs(Y2WldGlb)) *
  639.                               abs(Y1WldGlb) * abs(Y2RefGlb-Y1RefGlb))+1
  640.      else DeltaY:=0;
  641.      if (NPoints<2) and MessageGlb then
  642.        writeln('<DrawPolygon>: too few data pairs -> (NPoints) >= 2')
  643.      else
  644.       begin
  645.        x1:=WindowX(A[I0,1]);
  646.        y1:=Y2RefGlb+Y1RefGlb-WindowY(A[I0,2]);
  647.        DrawItem(x1,y1);
  648.        if Abs(Lines)=1 then
  649.          if AutoClip then DrawLineClipped(x1,Y2RefGlb-DeltaY,x1,y1)
  650.          else DrawLine(x1,Y2RefGlb-DeltaY,x1,y1);
  651.        for i:=I0+1 to NPoints do
  652.         begin
  653.          x2:=WindowX(A[i,1]);
  654.          y2:=Y2RefGlb+Y1RefGlb-WindowY(A[i,2]);
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  670.   VERSION : 1.03A
  671.        OS : PC-DOS
  672.      DATE : March 10, 1986                             PAGE : 11/15
  673.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  674.  
  675.  
  676.  
  677.  
  678.          DrawItem(x2,y2);
  679.          if Abs(Lines)=1 then
  680.            if AutoClip then DrawLineClipped(x2,Y2RefGlb-DeltaY,x2,y2)
  681.            else DrawLine(x2,Y2RefGlb-DeltaY,x2,y2);
  682.          if PlotLine then
  683.            if AutoClip then DrawLineClipped(x1,y1,x2,y2)
  684.            else DrawLine(x1,y1,x2,y2);
  685.          x1:=x2;
  686.          y1:=y2;
  687.         end;
  688.       end;
  689.      if AxisGlb then
  690.       begin
  691.        ReDefineWindow(WindowNdxGlb,X1RefLoc,Y1RefLoc,X2RefLoc,Y2RefLoc);
  692.        SelectWindow(WindowNdxGlb);
  693.  
  694.          <------------------|{***** INSERT THE FOLLOWING BLOCK. *****}
  695.                             |
  696.                             | X1Glb := X1Loc;
  697.                             | Y1Glb := Y1Loc;
  698.                             | X2Glb := X2Loc;
  699.                             | Y2Glb := Y2Loc;
  700.                             |
  701.                             |{***************************************}
  702.  
  703.        AxisGlb:=false;
  704.      end;
  705.      DirectModeGlb:=DirectModeLoc;
  706.     end
  707.    else error(18,4);
  708.   end;
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  736.   VERSION : 1.03A
  737.        OS : PC-DOS
  738.      DATE : March 10, 1986                             PAGE : 12/15
  739.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  740.  
  741.  
  742.  
  743.  
  744.                             HISTOGRM.HGH
  745.     (***********************************************************)
  746.     (*                                                         *)
  747.     (*               TURBO GRAPHIX version 1.03A               *)
  748.     (*                                                         *)
  749.     (*                    Bar chart module                     *)
  750.     (*                 Module  version  1.03A                  *)
  751.     (*                                                         *)
  752.     (*                 Copyright (C) 1985 by:                  *)
  753.     (*                 BORLAND  International                  *)
  754.     (*                                                         *)
  755.     (***********************************************************)
  756.   *******************( CHANGE 1.03A TO 1.05A ) *********************
  757.  
  758.   procedure DrawHistogram(A:PlotArray;
  759.                           NPoints:integer;
  760.                           Hatching:boolean;
  761.                           HatchStyle:integer);
  762.  
  763.     var x1,x2,y2,NPixels,Delta,NDiff,YRef:integer;
  764.         LineStyleLoc,i:integer;
  765.         Fract,s,y,YAxis:real;
  766.         DirectModeLoc,Negative:boolean;
  767.         wtemp:WindowType;
  768.          <------------------|{***** INSERT THE FOLLOWING LINE. *****}
  769.                             |
  770.                             | X1Loc,Y1Loc,X2Loc,Y2Loc:integer;
  771.                             |
  772.                             |{**************************************}
  773.      function Balance:integer;
  774.       begin
  775.         Balance:=0;
  776.         s:=s+Fract;
  777.         if s>=0.0 then
  778.          begin
  779.           s:=s-1.0;
  780.           Balance:=1;
  781.          end;
  782.       end;
  783.  
  784.     begin { DrawHistogram }
  785.       if abs(NPoints)>=2 then
  786.        begin
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  802.   VERSION : 1.03A
  803.        OS : PC-DOS
  804.      DATE : March 10, 1986                             PAGE : 13/15
  805.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  806.  
  807.  
  808.  
  809.  
  810.   (HISTOGRM.HGH cont.)
  811.  
  812.         <--------------------|{***** INSERT THE FOLLOWING BLOCK. *****}
  813.                              |
  814.                              | X1Loc := X1Glb;
  815.                              | Y1Loc := Y1Glb;
  816.                              | X2Loc := X2Glb;
  817.                              | Y2Loc := Y2Glb;
  818.                              |
  819.                              |{***************************************}
  820.         LineStyleLoc:=LinestyleGlb;
  821.         SetLineStyle(0);
  822.         if AxisGlb then
  823.          begin
  824.           wtemp:=window[WindowNdxGlb];
  825.           ReDefineWindow(WindowNdxGlb,X1RefGlb+4+X1Glb,
  826.                          Y1RefGlb+6+Y1Glb,
  827.                          X2RefGlb-2-X2Glb,Y2RefGlb-14-Y2Glb);
  828.           SelectWindow(WindowNdxGlb);
  829.  
  830.           <----------------|{*****  INSERT THE  FOLLOWING  LINE. *****}
  831.                            |
  832.                            | AxisGlb := true;
  833.                            |
  834.                            |{**************************************}
  835.          end;
  836.         DirectModeLoc:=DirectModeGlb;
  837.         DirectModeGlb:=true;
  838.         Negative:=NPoints<0;
  839.         NPoints:=abs(NPoints);
  840.         NPixels:=(X2RefGlb-X1RefGlb) shl 3+7;
  841.         Delta:=NPixels div NPoints;
  842.         NDiff:=NPixels-Delta*NPoints;
  843.         Fract:=NDiff/NPoints;
  844.         s:=-Fract;
  845.         x1:=X1RefGlb shl 3;
  846.         YRef:=trunc(Y2RefGlb+Y1RefGlb-AyGlb);
  847.         if Negative then DrawStraight(x1,X2RefGlb shl 3+7,YRef);
  848.         YAxis:=Y1RefGlb;
  849.         if BYGlb>0 then YAxis:=Y2RefGlb;
  850.  
  851.   (HISTOGRM.HGH cont.)
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  868.   VERSION : 1.03A
  869.        OS : PC-DOS
  870.      DATE : March 10, 1986                             PAGE : 14/15
  871.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  872.  
  873.  
  874.  
  875.  
  876.         for i:=1 to NPoints do
  877.          begin
  878.           x2:=x1+Delta+Balance;
  879.           y:=A[i,2];
  880.           if not Negative then y:=abs(y);
  881.           if AxisGlb then y2:=trunc(AyGlb+ByGlb*y)
  882.           else y2:=trunc((AyGlb+ByGlb*y)*0.99);
  883.           y2:=Y2RefGlb+Y1RefGlb-y2;
  884.           if not Negative then
  885.            begin
  886.             DrawLine(x1,YAxis,x1,y2);
  887.             DrawStraight(x1,x2,y2);
  888.             DrawLine(x2,y2,x2,YAxis);
  889.             if Hatching then
  890.               if odd(i) then hatch(x1,y2,x2,YAxis,HatchStyle)
  891.               else hatch(x1,y2,x2,YAxis,-HatchStyle);
  892.            end
  893.           else
  894.            begin
  895.             DrawLine(x1,YRef,x1,y2);
  896.             DrawStraight(x1,x2,y2);
  897.             DrawLine(x2,y2,x2,YRef);
  898.             if Hatching then
  899.              if YRef-y2<0 then
  900.               if odd(i) then hatch(x1,YRef,x2,y2,HatchStyle)
  901.               else hatch(x1,YRef,x2,y2,-HatchStyle)
  902.              else if odd(i) then hatch(x1,y2,x2,YRef,HatchStyle)
  903.              else hatch(x1,y2,x2,YRef,-HatchStyle);
  904.            end;
  905.           x1:=x2;
  906.          end;
  907.         if AxisGlb then
  908.          begin
  909.           window[WindowNdxGlb]:=wtemp;
  910.           SelectWindow(WindowNdxGlb);
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  934.   VERSION : 1.03A
  935.        OS : PC-DOS
  936.      DATE : March 10, 1986                             PAGE : 15/15
  937.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  938.  
  939.  
  940.  
  941.  
  942.   (HISTOGRM.HGH cont.)
  943.  
  944.            <-------------|{***** INSERT THE FOLLOWING BLOCK. *****}
  945.                          |
  946.                          | X1Glb := X1Loc;
  947.                          | Y1Glb := Y1Loc;
  948.                          | X2Glb := X2Loc;
  949.                          | Y2Glb := Y2Loc;
  950.                          |
  951.                          |{***************************************}
  952.  
  953.           AxisGlb:=false;
  954.          end;
  955.         DirectModeGlb:=DirectModeLoc;
  956.         SetLineStyle(LineStyleLoc);
  957.        end
  958.       else error(19,4);
  959.     end;
  960.  
  961.  
  962.   DISCLAIMER: You have the right to use this technical information
  963.   subject to the terms of the No-Nonsense License Statement that
  964.   you received with the Borland product to which this information
  965.   pertains.
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.